package arrAndstr;

import java.util.HashMap;
import java.util.Map;

/*
    13. 罗马数字转整数
 */
public class T13 {
    public static void main(String[] args) {
        String s = "III";
        System.out.println(romanToInt(s));
    }

    public static Map<String, Integer> map = new HashMap<String, Integer>();
    static {
        map.put("I", 1);
        map.put("V", 5);
        map.put("X", 10);
        map.put("L", 50);
        map.put("C", 100);
        map.put("D", 500);
        map.put("M", 1000);
    }
    public static int romanToInt(String s) {
        // 把1-9排列出来，就能发现规律（如果I在V前面，说明I是-1，即决定他的符号），一次累加就可以了
        int result = 0;
        for(int i=0; i<s.length()-1; i++) {
            boolean isSub = map.get(s.substring(i, i+1)) < map.get(s.substring(i+1, i+2));
            result += isSub ? -1*map.get(s.substring(i, i+1)) : map.get(s.substring(i, i+1));
        }
        return result + map.get(s.substring(s.length()-1));
    }


}
